program miejscazerowe;
uses crt;
var a,b,c,dok:real;
var ile:integer;


function log(dok:real):integer;
var a:real;
begin
log:=0;
a:=1;
while(a<>dok) do
begin
a:=a*0.1;
log:=log+1;
end;

end;
function pole(a,b:real;c:integer):real;
var x,y,ci,dl,x1,pl,fa:real;
var i,j:integer;
begin

dl:=b-a;
ci:=dl/c;
pole:=0;
for i:=1 to c do
begin
x1:=(i-1)*ci+a+ci/2;
pole:=pole+abs((-2*(x1*x1)+4)*ci);

end;



end;

procedure miejsca(dok,a,b:real;ile:integer);
var c,fa,fb,fc,d,po:real;
var i,v:byte;
begin
v:=0;
fa:=-2*a*a+4;
fb:=-2*b*b+4;

if fa*fb<0 then
begin
repeat
c:=((b-a)/2)+a;
fa:=-2*a*a+4;
fc:=-2*c*c+4;
if fa*fc<0 then b:=c else a:=c;
until(abs(b-a)<dok);
write('Miejsce zerowe: ', b:4:log(dok));
end
else
begin
po:=(b-a)/ile;
fc:=-2*a*a+b;
for i:=1 to ile do
begin
fa:=-2*(a+i*po)*(a+i*po)+4;
if fa*fc<0 then v:=v+1;
fc:=fa;
end;
write('Liczba miejsc zerowych: ',v);
end;

end;

begin
clrscr;
write('Obliczenia miejsc zerowych i pola figury pod wykresem dla funkcji f(x)=-2*x*x+4');
writeln();
write('Podaj dokladnosc : ');

read(dok);
write('Podaj poczatek przedzialu: ');
read(a);
write('Podaj koniec przedzialu: ');
read(b);
write('Ile przedzialow: ');
read(ile);
writeln('=================================');
miejsca(dok,a,b,ile);
writeln();
write('Pole to: ',pole(a,b,ile):4:log(dok));
readkey;

end.

end.